Package org.fto.jthink.sample.mboard.util

Source Code of org.fto.jthink.sample.mboard.util.MBoardHttpRequestFilter

/*
* MBoardHttpRequestFilter.java  2005-10-14
*
* 版权所有: 自由思考组织(FTO)软件团队 2000-2005, 保留所有权利.
* 这个软件是自由思考组织(FTO)软件团队开发的,如果要使用这个软件,请首先阅读并接受许可协议。
*
* Copyright 2000-2005 FTO Software Team, Inc. All Rights Reserved.
* This software is the proprietary information of FTO Software Team, Inc.
* Use is subject to license terms.
*
* FTO站点:http://www.free-think.org
*/
package org.fto.jthink.sample.mboard.util;

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

import org.fto.jthink.j2ee.web.HttpRequest;
import org.fto.jthink.j2ee.web.HttpRequestFilter;
import org.fto.jthink.j2ee.web.HttpSession;
import org.fto.jthink.j2ee.web.WEBApplicationContext;
import org.fto.jthink.log.LogManager;
import org.fto.jthink.log.Logger;
import org.fto.jthink.resource.ResourceManager;

/**
* 请求过滤器, 此程序演示了创建创建和设置资源容器,创建资源管理器, 向资源管理器中设置资源。
* 此过滤器需要在web.xml中配置。
*
*
*
* @author   wenjian
* @version  1.0
* @since    JThink Sample Message Board 1.0
* @see     JThink 1.0
*
*/
public class MBoardHttpRequestFilter implements HttpRequestFilter {

  private static final Logger logger = LogManager.getLogger(MBoardHttpRequestFilter.class);
  private static String encoding;
 
  /* (非 Javadoc)
   * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
   */
  public void init(FilterConfig config) throws ServletException {
    encoding = config.getInitParameter("encoding");
  }

  /* (非 Javadoc)
   * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
   */
  public void doFilter(ServletRequest req, ServletResponse res,
      FilterChain chain) throws IOException, ServletException {
    logger.debug("初始化请求.");
    try{
      WEBApplicationContext webContext = new WEBApplicationContext(((HttpServletRequest)req).getSession().getServletContext());

      /* 初始化请求 */
      req.setCharacterEncoding(encoding);
      HttpRequest request = new HttpRequest((HttpServletRequest)req);
     
      /* 初始化资源管理器 */
      ResourceManager resManager = new ResourceManager();
     
      /* 设置资源容器, WEBApplicationContext上下文 */
      resManager.setResourceContainer(WEBApplicationContext.class.getName(), webContext);

      /* 设置资源容器, HttpSession用户会话 */
      HttpSession session = new HttpSession(((HttpServletRequest)req).getSession());
      resManager.setResourceContainer(HttpSession.class.getName(), session);
     
      /* 设置资源容器, HttpRequest请求 */
      resManager.setResourceContainer(HttpRequest.class.getName(), request);
     
     
      /* 设置资源, WEBApplicationContext */
      resManager.setResource(WEBApplicationContext.class.getName(), webContext);
     
      /* 设置资源, HttpSession */
      resManager.setResource(HttpSession.class.getName(), session);
     
      /* 设置资源, HttpRequest */
      resManager.setResource(HttpRequest.class.getName(), request);     
     
      /* 设置资源, ServletResponse */
      resManager.setResource(ServletResponse.class.getName(), res);
     
      /* 将资源管理器加入到Request中,以便于在具休JSP或Servlet中能使用到资源管理器 */
      request.setAttribute(ResourceManager.class.getName(), resManager);
     
      /* 转到下一过滤器 */
      chain.doFilter(req, res);

    }catch(ServletException e){
      throw e;
    }
  }

  /* (非 Javadoc)
   * @see javax.servlet.Filter#destroy()
   */
  public void destroy() {

  }

}
TOP

Related Classes of org.fto.jthink.sample.mboard.util.MBoardHttpRequestFilter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.